﻿#pragma once

#ifndef BRIDGEANALYSIS_ERRORS_H
#define BRIDGEANALYSIS_ERRORS_H

// 一般性错误定义
constexpr auto ERR_CODE_FILE_EXISTS = -1001;
constexpr auto ERR_MESSAGE_FILE_EXISTS = "文件\"%s\"已存在。";

constexpr auto ERR_CODE_FILE_NOT_EXISTS = -1002;
constexpr auto ERR_MESSAGE_FILE_NOT_EXISTS = "文件\"%s\"不存在。";

constexpr auto ERR_CODE_FILE_CREATE_FAILED = -1003;
constexpr auto ERR_MESSAGE_FILE_CREATE_FAILED = "创建文件\"%s\"失败。";

constexpr auto ERR_CODE_FILE_OPEN_FAILED = -1004;
constexpr auto ERR_MESSAGE_FILE_OPEN_FAILED = "打开文件\"%s\"失败。";

constexpr auto ERR_CODE_FILE_READ_FAILED = -1005;
constexpr auto ERR_MESSAGE_FILE_READ_FAILED = "读取文件\"%s\"失败。";

constexpr auto ERR_CODE_FILE_WRITE_FAILED = -1006;
constexpr auto ERR_MESSAGE_FILE_WRITE_FAILED = "写入文件\"%s\"失败。";

constexpr auto ERR_CODE_FILE_DELETE_FAILED = -1007;
constexpr auto ERR_MESSAGE_FILE_DELETE_FAILED = "删除文件\"%s\"失败。";

constexpr auto ERR_CODE_FILE_PARSE_FAILED = -1008;
constexpr auto ERR_MESSAGE_FILE_PARSE_FAILED = "解析文件\"%s\"失败。";

constexpr auto ERR_CODE_MEM_ALLOC_FAILED = -1009;
constexpr auto ERR_MESSAGE_MEM_ALLOC_FAILED = "变量\"%s\"内存分配失败。";

constexpr auto ERR_CODE_PPARA_IS_NULL = -1010;
constexpr auto ERR_MESSAGE_PPARA_IS_NULL = "指针变量\"%s\"为nullptr。";

constexpr auto ERR_CODE_IPARAM_VALUE_INVALID = -1101;
constexpr auto ERR_MESSAGE_IPARAM_VALUE_INVALID = "整数参数\"%s\"的值(%d)非法，应取[%d～%d]之间的值。"; // 适用于最小值、最大值限定范围。
constexpr auto ERR_MESSAGE_IPARAM_VALUE_INVALID_1 = "整数参数\"%s\"的值(%d)非法，应取%s之间的值。";     // 适用于小数组枚举数据。

constexpr auto ERR_CODE_FPARAM_VALUE_INVALID = -1102;
constexpr auto ERR_MESSAGE_FPARAM_VALUE_INVALID = "浮点数参数\"%s\"的值(%f)非法，应取[%f～%f]之间的值。";

constexpr auto ERR_CODE_BUFFER_INSUFFICIENT = -1103;
constexpr auto ERR_MESSAGE_BUFFER_INSUFFICIENT = "缓冲区\"%s\"长度(%d)不够，应分配超过%d字节长度。";

constexpr auto ERR_CODE_GENERAL_EXCEPTION = -9998;
constexpr auto ERR_MESSAGE_GENERAL_EXCEPTION = "捕获到一般异常:\"%s\"";

constexpr auto ERR_CODE_UNKNOWN_EXCEPTION = -9999;
constexpr auto ERR_MESSAGE_UNKNOWN_EXCEPTION = "捕获到未知异常:\"%s\"";

// 业务相关错误定义
constexpr auto ERR_CODE_ORG_HANDLE_NOT_EXIST = -6001;
constexpr auto ERR_MESSAGE_ORG_HANDLE_NOT_EXIST = "谱图句柄(%lld)并不存在。";

constexpr auto ERR_CODE_METHOD_HANDLE_NOT_EXIST = -6002;
constexpr auto ERR_MESSAGE_METHOD_HANDLE_NOT_EXIST = "方法句柄(%lld)并不存在。";

constexpr auto ERR_CODE_ORG_HANDLE_IS_SAMPLING = -6003;
constexpr auto ERR_MESSAGE_ORG_HANDLE_IS_SAMPLING = "谱图句柄(%lld)正在采样中，不能操作。";

constexpr auto ERR_CODE_ORG_HANDLE_IS_NOT_SAMPLING = -6004;
constexpr auto ERR_MESSAGE_ORG_HANDLE_IS_NOT_SAMPLING = "谱图句柄(%lld)不在采样中，不能操作。";

constexpr auto ERR_CODE_CHANNEL_IS_SAMPLING = -6005;
constexpr auto ERR_MESSAGE_CHANNEL_IS_SAMPLING = "正在采样中，不能再次启动采样。";

constexpr auto ERR_CODE_CHANNEL_IS_NOT_SAMPLING = -6006;
constexpr auto ERR_MESSAGE_CHANNEL_IS_NOT_SAMPLING = "不在采样中，不能停止采样。";

constexpr auto ERR_CODE_SAMPLING_START_FAILED = -6007;
constexpr auto ERR_MESSAGE_SAMPLING_START_FAILED = "启动采样异常: %s";

constexpr auto ERR_CODE_SAMPLING_STOP_FAILED = -6008;
constexpr auto ERR_MESSAGE_SAMPLING_STOP_FAILED = "停止采样异常: %s";

constexpr auto ERR_CODE_REDIS_TIMEOUT = -6009;
constexpr auto ERR_MESSAGE_REDIS_TIMEOUT = "Redis数据超时。";

constexpr auto ERR_CODE_START_TIMEOUT = -6010;
constexpr auto ERR_MESSAGE_START_TIMEOUT = "仪器启动采样未及时返回有效数据。";

constexpr auto ERR_CODE_STOP_TIME_NOT_SYNC = -6011;
constexpr auto ERR_MESSAGE_STOP_TIME_NOT_SYNC = "仪器停止时间不同步。";

constexpr auto ERR_CODE_GATHER_TIME_NOT_SYNC = -6012;
constexpr auto ERR_MESSAGE_GATHER_TIME_NOT_SYNC = "仪器采样时长不同步。";

constexpr auto ERR_CODE_ORG_HAS_NOT_METHOD = -6013;
constexpr auto ERR_MESSAGE_ORG_HAS_NOT_METHOD = "谱图句柄(%lld)数据不完备，没有方法数据。";

constexpr auto ERR_CODE_ORG_HAS_NOT_RAWDATA = -6014;
constexpr auto ERR_MESSAGE_ORG_HAS_NOT_RAWDATA = "谱图句柄(%lld)数据不完备，通道(%d)没有原始数据。";

constexpr auto ERR_CODE_ORG_HAS_NOT_INSTCOND = -6015;
constexpr auto ERR_MESSAGE_ORG_HAS_NOT_INSTCOND = "谱图句柄(%lld)数据不完备，通道(%d)没有仪器条件数据。";

constexpr auto ERR_CODE_ORG_HAS_NOT_ANAYRESULT = -6017;
constexpr auto ERR_MESSAGE_ORG_HAS_NOT_ANAYRESULT = "谱图句柄(%lld)数据不完备，通道(%d)没有积分结果数据。";

constexpr auto ERR_CODE_ORG_HAS_NOT_SYNCRESULT = -6018;
constexpr auto ERR_MESSAGE_ORG_HAS_NOT_SYNCRESULT = "谱图句柄(%lld)数据不完备，通道(%d)没有综合数据。";

constexpr auto ERR_CODE_ORG_HAS_NOT_STUDYDATA = -6019;
constexpr auto ERR_MESSAGE_ORG_HAS_NOT_STUDYDATA = "谱图句柄(%lld)数据不完备，通道(%d)没有学习数据。";

constexpr auto ERR_CODE_ORG_HAS_NOT_BLANKDATA = -6020;
constexpr auto ERR_MESSAGE_ORG_HAS_NOT_BLANKDATA = "谱图句柄(%lld)数据不完备，通道(%d)没有基线数据。";

constexpr auto ERR_CODE_ORG_HAS_NOT_BLANKRESULT = -6021;
constexpr auto ERR_MESSAGE_ORG_HAS_NOT_BLANKRESULT = "谱图句柄(%lld)数据不完备，通道(%d)没有基线结果数据。";

constexpr auto ERR_CODE_METHOD_HAS_NOT_EVENTLIST = -6022;
constexpr auto ERR_MESSAGE_METHOD_HAS_NOT_EVENTLIST = "方法句柄(%lld,%d)数据不完备，没有手动事件数据。";

constexpr auto ERR_CODE_METHOD_HAS_NOT_COMPLIST = -6023;
constexpr auto ERR_MESSAGE_METHOD_HAS_NOT_COMPLIST = "方法句柄(%lld,%d)数据不完备，没有组分数据。";

constexpr auto ERR_CODE_METHOD_HAS_NOT_GROUPLIST = -6024;
constexpr auto ERR_MESSAGE_METHOD_HAS_NOT_GROUPLIST = "方法句柄(%lld,%d)数据不完备，没有分组数据。";

constexpr auto ERR_CODE_METHOD_HAS_NOT_SEGMENTLIST = -6025;
constexpr auto ERR_MESSAGE_METHOD_HAS_NOT_SEGMENTLIST = "方法句柄(%lld,%d)数据不完备，没有分段积分数据。";

constexpr auto ERR_CODE_METHOD_HAS_NOT_CALIBLIST = -6026;
constexpr auto ERR_MESSAGE_METHOD_HAS_NOT_CALIBLIST = "方法句柄(%lld,%d)数据不完备，没有校正数据。";

constexpr auto ERR_CODE_METHOD_HAS_NOT_CALIBRESULT = -6027;
constexpr auto ERR_MESSAGE_METHOD_HAS_NOT_CALIBRESULT = "方法句柄(%lld,%d)数据不完备，没有校正结果数据。";

constexpr auto ERR_CODE_ANALYSIS = -6088;
constexpr auto ERR_MESSAGE_ANALYSIS = "积分失败。";

#endif
